package com.xzy.rabbit.demo.helloworld;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 简单模式：生产者
 *
 * @author xzy
 * @date 2021年9月23日
 */
@Slf4j
@NoArgsConstructor(access = AccessLevel.PRIVATE)
class Producer {

    /**
     * 生产消息
     *
     * @param connection - TCP连接
     * @param queueName  - 队列名称
     * @param message    - 消息
     */
    public static void produce(Connection connection, String queueName, String message) throws IOException, TimeoutException {
        // 1.获取信道
        try (Channel channel = connection.createChannel()) {

            // 2.声明队列
            channel.queueDeclare(queueName, false, false, false, null);

            // 3.发送消息（生产）
            channel.basicPublish("", queueName, null, message.getBytes());
            log.info("成功发送\nqueue ==> {}\nmessage ==> {}\n", queueName, message);
        }
    }
}
